// $ANTLR 3.4 C:\\Users\\Jose\\workspace\\practica8\\src\\main\\java\\PL\\practica8\\javaParser.g 2012-11-07 16:32:48
package PL.practica8;

import org.antlr.runtime.*;
import java.util.Stack;
import java.util.List;
import java.util.ArrayList;

@SuppressWarnings({"all", "warnings", "unchecked"})
public class javaParser extends Parser {
    public static final String[] tokenNames = new String[] {
        "<invalid>", "<EOR>", "<DOWN>", "<UP>", "ABRIRCORCHETE", "ABRIRLLAVE", "ABRIRPARENTESIS", "ASIGNACION", "ASTERISCO", "BLANCO", "BOOLEAN", "BREAK", "CADENA", "CARACTER", "CERRARCORCHETE", "CERRARLLAVE", "CERRARPARENTESIS", "CHAR", "COMA", "COMENTARIO", "COMENTARIOlINEA", "COMILLAS", "DIGITO", "DOSPUNTOS", "FALSE", "FLOAT", "FOR", "ID", "IF", "INT", "INTERROGACION", "LETRA", "MAS", "MENOS", "NUEVA_LINEA", "NUMERO", "OP_AND", "OP_COMP", "OP_NOT", "OP_OR", "RETURN", "SEPARADOR", "SLASH", "TRUE", "VOID", "WHILE", "ABRIRCORCHETES", "CERRARCORCHETES", "RETORNAR"
    };

    public static final int EOF=-1;
    public static final int ABRIRCORCHETE=4;
    public static final int ABRIRLLAVE=5;
    public static final int ABRIRPARENTESIS=6;
    public static final int ASIGNACION=7;
    public static final int ASTERISCO=8;
    public static final int BLANCO=9;
    public static final int BOOLEAN=10;
    public static final int BREAK=11;
    public static final int CADENA=12;
    public static final int CARACTER=13;
    public static final int CERRARCORCHETE=14;
    public static final int CERRARLLAVE=15;
    public static final int CERRARPARENTESIS=16;
    public static final int CHAR=17;
    public static final int COMA=18;
    public static final int COMENTARIO=19;
    public static final int COMENTARIOlINEA=20;
    public static final int COMILLAS=21;
    public static final int DIGITO=22;
    public static final int DOSPUNTOS=23;
    public static final int FALSE=24;
    public static final int FLOAT=25;
    public static final int FOR=26;
    public static final int ID=27;
    public static final int IF=28;
    public static final int INT=29;
    public static final int INTERROGACION=30;
    public static final int LETRA=31;
    public static final int MAS=32;
    public static final int MENOS=33;
    public static final int NUEVA_LINEA=34;
    public static final int NUMERO=35;
    public static final int OP_AND=36;
    public static final int OP_COMP=37;
    public static final int OP_NOT=38;
    public static final int OP_OR=39;
    public static final int RETURN=40;
    public static final int SEPARADOR=41;
    public static final int SLASH=42;
    public static final int TRUE=43;
    public static final int VOID=44;
    public static final int WHILE=45;
    public static final int ABRIRCORCHETES=46;
    public static final int CERRARCORCHETES=47;
    public static final int RETORNAR=48;

    // delegates
    public Parser[] getDelegates() {
        return new Parser[] {};
    }

    // delegators


    public javaParser(TokenStream input) {
        this(input, new RecognizerSharedState());
    }
    public javaParser(TokenStream input, RecognizerSharedState state) {
        super(input, state);
    }

    public String[] getTokenNames() { return javaParser.tokenNames; }
    public String getGrammarFileName() { return "C:\\Users\\Jose\\workspace\\practica8\\src\\main\\java\\PL\\practica8\\javaParser.g"; }


      private boolean breakFound = false;
      
      public boolean isBreakFound() { 
        return breakFound;
      } 
      
      ArrayList <RecognitionException> errores = new ArrayList<RecognitionException>();

      public boolean listaVacia (){
        if (errores.isEmpty()){
          return true;
        }else
          return false;
    }

    public ArrayList getListaErrores(){return errores;}


    @Override
    public void reportError (RecognitionException e){
      System.err.println (getErrorMessage(e, getTokenNames()));
      errores.add(e);
    }
      
      
      
      



    // $ANTLR start "tipo"
    // C:\\Users\\Jose\\workspace\\practica8\\src\\main\\java\\PL\\practica8\\javaParser.g:45:1: tipo : ( VOID | CHAR | FLOAT | INT );
    public final void tipo() throws RecognitionException {
        try {
            // C:\\Users\\Jose\\workspace\\practica8\\src\\main\\java\\PL\\practica8\\javaParser.g:45:6: ( VOID | CHAR | FLOAT | INT )
            // C:\\Users\\Jose\\workspace\\practica8\\src\\main\\java\\PL\\practica8\\javaParser.g:
            {
            if ( input.LA(1)==CHAR||input.LA(1)==FLOAT||input.LA(1)==INT||input.LA(1)==VOID ) {
                input.consume();
                state.errorRecovery=false;
            }
            else {
                MismatchedSetException mse = new MismatchedSetException(null,input);
                throw mse;
            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }

        finally {
        	// do for sure before leaving
        }
        return ;
    }
    // $ANTLR end "tipo"



    // $ANTLR start "parametro"
    // C:\\Users\\Jose\\workspace\\practica8\\src\\main\\java\\PL\\practica8\\javaParser.g:46:1: parametro : ( CADENA | CARACTER | NUMERO | ID ( ABRIRCORCHETES NUMERO CERRARCORCHETES )? );
    public final void parametro() throws RecognitionException {
        try {
            // C:\\Users\\Jose\\workspace\\practica8\\src\\main\\java\\PL\\practica8\\javaParser.g:46:11: ( CADENA | CARACTER | NUMERO | ID ( ABRIRCORCHETES NUMERO CERRARCORCHETES )? )
            int alt2=4;
            switch ( input.LA(1) ) {
            case CADENA:
                {
                alt2=1;
                }
                break;
            case CARACTER:
                {
                alt2=2;
                }
                break;
            case NUMERO:
                {
                alt2=3;
                }
                break;
            case ID:
                {
                alt2=4;
                }
                break;
            default:
                NoViableAltException nvae =
                    new NoViableAltException("", 2, 0, input);

                throw nvae;

            }

            switch (alt2) {
                case 1 :
                    // C:\\Users\\Jose\\workspace\\practica8\\src\\main\\java\\PL\\practica8\\javaParser.g:46:13: CADENA
                    {
                    match(input,CADENA,FOLLOW_CADENA_in_parametro71); 

                    }
                    break;
                case 2 :
                    // C:\\Users\\Jose\\workspace\\practica8\\src\\main\\java\\PL\\practica8\\javaParser.g:46:22: CARACTER
                    {
                    match(input,CARACTER,FOLLOW_CARACTER_in_parametro75); 

                    }
                    break;
                case 3 :
                    // C:\\Users\\Jose\\workspace\\practica8\\src\\main\\java\\PL\\practica8\\javaParser.g:46:33: NUMERO
                    {
                    match(input,NUMERO,FOLLOW_NUMERO_in_parametro79); 

                    }
                    break;
                case 4 :
                    // C:\\Users\\Jose\\workspace\\practica8\\src\\main\\java\\PL\\practica8\\javaParser.g:46:42: ID ( ABRIRCORCHETES NUMERO CERRARCORCHETES )?
                    {
                    match(input,ID,FOLLOW_ID_in_parametro83); 

                    // C:\\Users\\Jose\\workspace\\practica8\\src\\main\\java\\PL\\practica8\\javaParser.g:46:45: ( ABRIRCORCHETES NUMERO CERRARCORCHETES )?
                    int alt1=2;
                    int LA1_0 = input.LA(1);

                    if ( (LA1_0==ABRIRCORCHETES) ) {
                        alt1=1;
                    }
                    switch (alt1) {
                        case 1 :
                            // C:\\Users\\Jose\\workspace\\practica8\\src\\main\\java\\PL\\practica8\\javaParser.g:46:46: ABRIRCORCHETES NUMERO CERRARCORCHETES
                            {
                            match(input,ABRIRCORCHETES,FOLLOW_ABRIRCORCHETES_in_parametro86); 

                            match(input,NUMERO,FOLLOW_NUMERO_in_parametro88); 

                            match(input,CERRARCORCHETES,FOLLOW_CERRARCORCHETES_in_parametro90); 

                            }
                            break;

                    }


                    }
                    break;

            }
        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }

        finally {
        	// do for sure before leaving
        }
        return ;
    }
    // $ANTLR end "parametro"



    // $ANTLR start "parametros"
    // C:\\Users\\Jose\\workspace\\practica8\\src\\main\\java\\PL\\practica8\\javaParser.g:47:1: parametros : parametro ( COMA parametro )* ;
    public final void parametros() throws RecognitionException {
        try {
            // C:\\Users\\Jose\\workspace\\practica8\\src\\main\\java\\PL\\practica8\\javaParser.g:47:12: ( parametro ( COMA parametro )* )
            // C:\\Users\\Jose\\workspace\\practica8\\src\\main\\java\\PL\\practica8\\javaParser.g:47:14: parametro ( COMA parametro )*
            {
            pushFollow(FOLLOW_parametro_in_parametros99);
            parametro();

            state._fsp--;


            // C:\\Users\\Jose\\workspace\\practica8\\src\\main\\java\\PL\\practica8\\javaParser.g:47:24: ( COMA parametro )*
            loop3:
            do {
                int alt3=2;
                int LA3_0 = input.LA(1);

                if ( (LA3_0==COMA) ) {
                    alt3=1;
                }


                switch (alt3) {
            	case 1 :
            	    // C:\\Users\\Jose\\workspace\\practica8\\src\\main\\java\\PL\\practica8\\javaParser.g:47:25: COMA parametro
            	    {
            	    match(input,COMA,FOLLOW_COMA_in_parametros102); 

            	    pushFollow(FOLLOW_parametro_in_parametros104);
            	    parametro();

            	    state._fsp--;


            	    }
            	    break;

            	default :
            	    break loop3;
                }
            } while (true);


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }

        finally {
        	// do for sure before leaving
        }
        return ;
    }
    // $ANTLR end "parametros"



    // $ANTLR start "def_parametros"
    // C:\\Users\\Jose\\workspace\\practica8\\src\\main\\java\\PL\\practica8\\javaParser.g:48:1: def_parametros : tipo parametro ( COMA tipo parametro )* ;
    public final void def_parametros() throws RecognitionException {
        try {
            // C:\\Users\\Jose\\workspace\\practica8\\src\\main\\java\\PL\\practica8\\javaParser.g:48:16: ( tipo parametro ( COMA tipo parametro )* )
            // C:\\Users\\Jose\\workspace\\practica8\\src\\main\\java\\PL\\practica8\\javaParser.g:48:18: tipo parametro ( COMA tipo parametro )*
            {
            pushFollow(FOLLOW_tipo_in_def_parametros113);
            tipo();

            state._fsp--;


            pushFollow(FOLLOW_parametro_in_def_parametros115);
            parametro();

            state._fsp--;


            // C:\\Users\\Jose\\workspace\\practica8\\src\\main\\java\\PL\\practica8\\javaParser.g:48:33: ( COMA tipo parametro )*
            loop4:
            do {
                int alt4=2;
                int LA4_0 = input.LA(1);

                if ( (LA4_0==COMA) ) {
                    alt4=1;
                }


                switch (alt4) {
            	case 1 :
            	    // C:\\Users\\Jose\\workspace\\practica8\\src\\main\\java\\PL\\practica8\\javaParser.g:48:34: COMA tipo parametro
            	    {
            	    match(input,COMA,FOLLOW_COMA_in_def_parametros118); 

            	    pushFollow(FOLLOW_tipo_in_def_parametros120);
            	    tipo();

            	    state._fsp--;


            	    pushFollow(FOLLOW_parametro_in_def_parametros122);
            	    parametro();

            	    state._fsp--;


            	    }
            	    break;

            	default :
            	    break loop4;
                }
            } while (true);


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }

        finally {
        	// do for sure before leaving
        }
        return ;
    }
    // $ANTLR end "def_parametros"



    // $ANTLR start "op_arit"
    // C:\\Users\\Jose\\workspace\\practica8\\src\\main\\java\\PL\\practica8\\javaParser.g:49:1: op_arit : ( MAS | MENOS | SLASH | ASTERISCO );
    public final void op_arit() throws RecognitionException {
        try {
            // C:\\Users\\Jose\\workspace\\practica8\\src\\main\\java\\PL\\practica8\\javaParser.g:49:9: ( MAS | MENOS | SLASH | ASTERISCO )
            // C:\\Users\\Jose\\workspace\\practica8\\src\\main\\java\\PL\\practica8\\javaParser.g:
            {
            if ( input.LA(1)==ASTERISCO||(input.LA(1) >= MAS && input.LA(1) <= MENOS)||input.LA(1)==SLASH ) {
                input.consume();
                state.errorRecovery=false;
            }
            else {
                MismatchedSetException mse = new MismatchedSetException(null,input);
                throw mse;
            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }

        finally {
        	// do for sure before leaving
        }
        return ;
    }
    // $ANTLR end "op_arit"



    // $ANTLR start "op_log"
    // C:\\Users\\Jose\\workspace\\practica8\\src\\main\\java\\PL\\practica8\\javaParser.g:50:1: op_log : ( OP_OR | OP_AND );
    public final void op_log() throws RecognitionException {
        try {
            // C:\\Users\\Jose\\workspace\\practica8\\src\\main\\java\\PL\\practica8\\javaParser.g:50:8: ( OP_OR | OP_AND )
            // C:\\Users\\Jose\\workspace\\practica8\\src\\main\\java\\PL\\practica8\\javaParser.g:
            {
            if ( input.LA(1)==OP_AND||input.LA(1)==OP_OR ) {
                input.consume();
                state.errorRecovery=false;
            }
            else {
                MismatchedSetException mse = new MismatchedSetException(null,input);
                throw mse;
            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }

        finally {
        	// do for sure before leaving
        }
        return ;
    }
    // $ANTLR end "op_log"



    // $ANTLR start "entrada"
    // C:\\Users\\Jose\\workspace\\practica8\\src\\main\\java\\PL\\practica8\\javaParser.g:54:1: entrada : ( metodo | sentencia[false] )* ;
    public final void entrada() throws RecognitionException {
        try {
            // C:\\Users\\Jose\\workspace\\practica8\\src\\main\\java\\PL\\practica8\\javaParser.g:54:9: ( ( metodo | sentencia[false] )* )
            // C:\\Users\\Jose\\workspace\\practica8\\src\\main\\java\\PL\\practica8\\javaParser.g:54:11: ( metodo | sentencia[false] )*
            {
            // C:\\Users\\Jose\\workspace\\practica8\\src\\main\\java\\PL\\practica8\\javaParser.g:54:11: ( metodo | sentencia[false] )*
            loop5:
            do {
                int alt5=3;
                int LA5_0 = input.LA(1);

                if ( (LA5_0==CHAR||LA5_0==FLOAT||LA5_0==INT||LA5_0==VOID) ) {
                    int LA5_2 = input.LA(2);

                    if ( (LA5_2==ID) ) {
                        int LA5_4 = input.LA(3);

                        if ( (LA5_4==ABRIRPARENTESIS) ) {
                            alt5=1;
                        }
                        else if ( (LA5_4==ASIGNACION||LA5_4==COMA||LA5_4==SEPARADOR) ) {
                            alt5=2;
                        }


                    }


                }
                else if ( (LA5_0==BREAK||(LA5_0 >= ID && LA5_0 <= IF)||LA5_0==WHILE||LA5_0==RETORNAR) ) {
                    alt5=2;
                }


                switch (alt5) {
            	case 1 :
            	    // C:\\Users\\Jose\\workspace\\practica8\\src\\main\\java\\PL\\practica8\\javaParser.g:54:12: metodo
            	    {
            	    pushFollow(FOLLOW_metodo_in_entrada159);
            	    metodo();

            	    state._fsp--;


            	    }
            	    break;
            	case 2 :
            	    // C:\\Users\\Jose\\workspace\\practica8\\src\\main\\java\\PL\\practica8\\javaParser.g:54:19: sentencia[false]
            	    {
            	    pushFollow(FOLLOW_sentencia_in_entrada161);
            	    sentencia(false);

            	    state._fsp--;


            	    }
            	    break;

            	default :
            	    break loop5;
                }
            } while (true);


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }

        finally {
        	// do for sure before leaving
        }
        return ;
    }
    // $ANTLR end "entrada"



    // $ANTLR start "metodo"
    // C:\\Users\\Jose\\workspace\\practica8\\src\\main\\java\\PL\\practica8\\javaParser.g:55:2: metodo : cabecerafuncion bloqueLlaves[false] ;
    public final void metodo() throws RecognitionException {
        try {
            // C:\\Users\\Jose\\workspace\\practica8\\src\\main\\java\\PL\\practica8\\javaParser.g:55:9: ( cabecerafuncion bloqueLlaves[false] )
            // C:\\Users\\Jose\\workspace\\practica8\\src\\main\\java\\PL\\practica8\\javaParser.g:55:11: cabecerafuncion bloqueLlaves[false]
            {
            pushFollow(FOLLOW_cabecerafuncion_in_metodo172);
            cabecerafuncion();

            state._fsp--;


            pushFollow(FOLLOW_bloqueLlaves_in_metodo174);
            bloqueLlaves(false);

            state._fsp--;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }

        finally {
        	// do for sure before leaving
        }
        return ;
    }
    // $ANTLR end "metodo"



    // $ANTLR start "asignacion"
    // C:\\Users\\Jose\\workspace\\practica8\\src\\main\\java\\PL\\practica8\\javaParser.g:56:2: asignacion : declaracion ( ( ASIGNACION ( expr | llamadafuncion ) ) | ( COMA declaracion ) )* ;
    public final void asignacion() throws RecognitionException {
        try {
            // C:\\Users\\Jose\\workspace\\practica8\\src\\main\\java\\PL\\practica8\\javaParser.g:56:13: ( declaracion ( ( ASIGNACION ( expr | llamadafuncion ) ) | ( COMA declaracion ) )* )
            // C:\\Users\\Jose\\workspace\\practica8\\src\\main\\java\\PL\\practica8\\javaParser.g:56:16: declaracion ( ( ASIGNACION ( expr | llamadafuncion ) ) | ( COMA declaracion ) )*
            {
            pushFollow(FOLLOW_declaracion_in_asignacion184);
            declaracion();

            state._fsp--;


            // C:\\Users\\Jose\\workspace\\practica8\\src\\main\\java\\PL\\practica8\\javaParser.g:56:29: ( ( ASIGNACION ( expr | llamadafuncion ) ) | ( COMA declaracion ) )*
            loop7:
            do {
                int alt7=3;
                int LA7_0 = input.LA(1);

                if ( (LA7_0==ASIGNACION) ) {
                    alt7=1;
                }
                else if ( (LA7_0==COMA) ) {
                    alt7=2;
                }


                switch (alt7) {
            	case 1 :
            	    // C:\\Users\\Jose\\workspace\\practica8\\src\\main\\java\\PL\\practica8\\javaParser.g:56:30: ( ASIGNACION ( expr | llamadafuncion ) )
            	    {
            	    // C:\\Users\\Jose\\workspace\\practica8\\src\\main\\java\\PL\\practica8\\javaParser.g:56:30: ( ASIGNACION ( expr | llamadafuncion ) )
            	    // C:\\Users\\Jose\\workspace\\practica8\\src\\main\\java\\PL\\practica8\\javaParser.g:56:31: ASIGNACION ( expr | llamadafuncion )
            	    {
            	    match(input,ASIGNACION,FOLLOW_ASIGNACION_in_asignacion189); 

            	    // C:\\Users\\Jose\\workspace\\practica8\\src\\main\\java\\PL\\practica8\\javaParser.g:56:42: ( expr | llamadafuncion )
            	    int alt6=2;
            	    int LA6_0 = input.LA(1);

            	    if ( (LA6_0==ABRIRPARENTESIS||LA6_0==NUMERO) ) {
            	        alt6=1;
            	    }
            	    else if ( (LA6_0==ID) ) {
            	        int LA6_2 = input.LA(2);

            	        if ( (LA6_2==ABRIRPARENTESIS) ) {
            	            alt6=2;
            	        }
            	        else if ( ((LA6_2 >= ASIGNACION && LA6_2 <= ASTERISCO)||LA6_2==COMA||(LA6_2 >= MAS && LA6_2 <= MENOS)||(LA6_2 >= SEPARADOR && LA6_2 <= SLASH)) ) {
            	            alt6=1;
            	        }
            	        else {
            	            NoViableAltException nvae =
            	                new NoViableAltException("", 6, 2, input);

            	            throw nvae;

            	        }
            	    }
            	    else {
            	        NoViableAltException nvae =
            	            new NoViableAltException("", 6, 0, input);

            	        throw nvae;

            	    }
            	    switch (alt6) {
            	        case 1 :
            	            // C:\\Users\\Jose\\workspace\\practica8\\src\\main\\java\\PL\\practica8\\javaParser.g:56:43: expr
            	            {
            	            pushFollow(FOLLOW_expr_in_asignacion192);
            	            expr();

            	            state._fsp--;


            	            }
            	            break;
            	        case 2 :
            	            // C:\\Users\\Jose\\workspace\\practica8\\src\\main\\java\\PL\\practica8\\javaParser.g:56:50: llamadafuncion
            	            {
            	            pushFollow(FOLLOW_llamadafuncion_in_asignacion196);
            	            llamadafuncion();

            	            state._fsp--;


            	            }
            	            break;

            	    }


            	    }


            	    }
            	    break;
            	case 2 :
            	    // C:\\Users\\Jose\\workspace\\practica8\\src\\main\\java\\PL\\practica8\\javaParser.g:56:69: ( COMA declaracion )
            	    {
            	    // C:\\Users\\Jose\\workspace\\practica8\\src\\main\\java\\PL\\practica8\\javaParser.g:56:69: ( COMA declaracion )
            	    // C:\\Users\\Jose\\workspace\\practica8\\src\\main\\java\\PL\\practica8\\javaParser.g:56:70: COMA declaracion
            	    {
            	    match(input,COMA,FOLLOW_COMA_in_asignacion203); 

            	    pushFollow(FOLLOW_declaracion_in_asignacion205);
            	    declaracion();

            	    state._fsp--;


            	    }


            	    }
            	    break;

            	default :
            	    break loop7;
                }
            } while (true);


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }

        finally {
        	// do for sure before leaving
        }
        return ;
    }
    // $ANTLR end "asignacion"



    // $ANTLR start "declaracion"
    // C:\\Users\\Jose\\workspace\\practica8\\src\\main\\java\\PL\\practica8\\javaParser.g:57:2: declaracion : ( tipo )? ID ;
    public final void declaracion() throws RecognitionException {
        try {
            // C:\\Users\\Jose\\workspace\\practica8\\src\\main\\java\\PL\\practica8\\javaParser.g:57:14: ( ( tipo )? ID )
            // C:\\Users\\Jose\\workspace\\practica8\\src\\main\\java\\PL\\practica8\\javaParser.g:57:16: ( tipo )? ID
            {
            // C:\\Users\\Jose\\workspace\\practica8\\src\\main\\java\\PL\\practica8\\javaParser.g:57:16: ( tipo )?
            int alt8=2;
            int LA8_0 = input.LA(1);

            if ( (LA8_0==CHAR||LA8_0==FLOAT||LA8_0==INT||LA8_0==VOID) ) {
                alt8=1;
            }
            switch (alt8) {
                case 1 :
                    // C:\\Users\\Jose\\workspace\\practica8\\src\\main\\java\\PL\\practica8\\javaParser.g:57:16: tipo
                    {
                    pushFollow(FOLLOW_tipo_in_declaracion216);
                    tipo();

                    state._fsp--;


                    }
                    break;

            }


            match(input,ID,FOLLOW_ID_in_declaracion219); 

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }

        finally {
        	// do for sure before leaving
        }
        return ;
    }
    // $ANTLR end "declaracion"



    // $ANTLR start "expr"
    // C:\\Users\\Jose\\workspace\\practica8\\src\\main\\java\\PL\\practica8\\javaParser.g:59:2: expr : exp_mult ( ( MAS exp_mult ) | ( MENOS exp_mult ) )* ;
    public final void expr() throws RecognitionException {
        try {
            // C:\\Users\\Jose\\workspace\\practica8\\src\\main\\java\\PL\\practica8\\javaParser.g:59:7: ( exp_mult ( ( MAS exp_mult ) | ( MENOS exp_mult ) )* )
            // C:\\Users\\Jose\\workspace\\practica8\\src\\main\\java\\PL\\practica8\\javaParser.g:59:9: exp_mult ( ( MAS exp_mult ) | ( MENOS exp_mult ) )*
            {
            pushFollow(FOLLOW_exp_mult_in_expr229);
            exp_mult();

            state._fsp--;


            // C:\\Users\\Jose\\workspace\\practica8\\src\\main\\java\\PL\\practica8\\javaParser.g:59:18: ( ( MAS exp_mult ) | ( MENOS exp_mult ) )*
            loop9:
            do {
                int alt9=3;
                int LA9_0 = input.LA(1);

                if ( (LA9_0==MAS) ) {
                    alt9=1;
                }
                else if ( (LA9_0==MENOS) ) {
                    alt9=2;
                }


                switch (alt9) {
            	case 1 :
            	    // C:\\Users\\Jose\\workspace\\practica8\\src\\main\\java\\PL\\practica8\\javaParser.g:59:19: ( MAS exp_mult )
            	    {
            	    // C:\\Users\\Jose\\workspace\\practica8\\src\\main\\java\\PL\\practica8\\javaParser.g:59:19: ( MAS exp_mult )
            	    // C:\\Users\\Jose\\workspace\\practica8\\src\\main\\java\\PL\\practica8\\javaParser.g:59:20: MAS exp_mult
            	    {
            	    match(input,MAS,FOLLOW_MAS_in_expr233); 

            	    pushFollow(FOLLOW_exp_mult_in_expr235);
            	    exp_mult();

            	    state._fsp--;


            	    }


            	    }
            	    break;
            	case 2 :
            	    // C:\\Users\\Jose\\workspace\\practica8\\src\\main\\java\\PL\\practica8\\javaParser.g:59:36: ( MENOS exp_mult )
            	    {
            	    // C:\\Users\\Jose\\workspace\\practica8\\src\\main\\java\\PL\\practica8\\javaParser.g:59:36: ( MENOS exp_mult )
            	    // C:\\Users\\Jose\\workspace\\practica8\\src\\main\\java\\PL\\practica8\\javaParser.g:59:37: MENOS exp_mult
            	    {
            	    match(input,MENOS,FOLLOW_MENOS_in_expr241); 

            	    pushFollow(FOLLOW_exp_mult_in_expr243);
            	    exp_mult();

            	    state._fsp--;


            	    }


            	    }
            	    break;

            	default :
            	    break loop9;
                }
            } while (true);


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }

        finally {
        	// do for sure before leaving
        }
        return ;
    }
    // $ANTLR end "expr"



    // $ANTLR start "exp_mult"
    // C:\\Users\\Jose\\workspace\\practica8\\src\\main\\java\\PL\\practica8\\javaParser.g:60:2: exp_mult : exp_base ( ( ASTERISCO exp_base ) | ( SLASH exp_base ) )* ;
    public final void exp_mult() throws RecognitionException {
        try {
            // C:\\Users\\Jose\\workspace\\practica8\\src\\main\\java\\PL\\practica8\\javaParser.g:60:12: ( exp_base ( ( ASTERISCO exp_base ) | ( SLASH exp_base ) )* )
            // C:\\Users\\Jose\\workspace\\practica8\\src\\main\\java\\PL\\practica8\\javaParser.g:60:15: exp_base ( ( ASTERISCO exp_base ) | ( SLASH exp_base ) )*
            {
            pushFollow(FOLLOW_exp_base_in_exp_mult259);
            exp_base();

            state._fsp--;


            // C:\\Users\\Jose\\workspace\\practica8\\src\\main\\java\\PL\\practica8\\javaParser.g:60:23: ( ( ASTERISCO exp_base ) | ( SLASH exp_base ) )*
            loop10:
            do {
                int alt10=3;
                int LA10_0 = input.LA(1);

                if ( (LA10_0==ASTERISCO) ) {
                    alt10=1;
                }
                else if ( (LA10_0==SLASH) ) {
                    alt10=2;
                }


                switch (alt10) {
            	case 1 :
            	    // C:\\Users\\Jose\\workspace\\practica8\\src\\main\\java\\PL\\practica8\\javaParser.g:60:24: ( ASTERISCO exp_base )
            	    {
            	    // C:\\Users\\Jose\\workspace\\practica8\\src\\main\\java\\PL\\practica8\\javaParser.g:60:24: ( ASTERISCO exp_base )
            	    // C:\\Users\\Jose\\workspace\\practica8\\src\\main\\java\\PL\\practica8\\javaParser.g:60:25: ASTERISCO exp_base
            	    {
            	    match(input,ASTERISCO,FOLLOW_ASTERISCO_in_exp_mult262); 

            	    pushFollow(FOLLOW_exp_base_in_exp_mult264);
            	    exp_base();

            	    state._fsp--;


            	    }


            	    }
            	    break;
            	case 2 :
            	    // C:\\Users\\Jose\\workspace\\practica8\\src\\main\\java\\PL\\practica8\\javaParser.g:60:47: ( SLASH exp_base )
            	    {
            	    // C:\\Users\\Jose\\workspace\\practica8\\src\\main\\java\\PL\\practica8\\javaParser.g:60:47: ( SLASH exp_base )
            	    // C:\\Users\\Jose\\workspace\\practica8\\src\\main\\java\\PL\\practica8\\javaParser.g:60:48: SLASH exp_base
            	    {
            	    match(input,SLASH,FOLLOW_SLASH_in_exp_mult270); 

            	    pushFollow(FOLLOW_exp_base_in_exp_mult272);
            	    exp_base();

            	    state._fsp--;


            	    }


            	    }
            	    break;

            	default :
            	    break loop10;
                }
            } while (true);


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }

        finally {
        	// do for sure before leaving
        }
        return ;
    }
    // $ANTLR end "exp_mult"



    // $ANTLR start "exp_base"
    // C:\\Users\\Jose\\workspace\\practica8\\src\\main\\java\\PL\\practica8\\javaParser.g:61:2: exp_base : ( NUMERO | ABRIRPARENTESIS expr CERRARPARENTESIS | ID );
    public final void exp_base() throws RecognitionException {
        try {
            // C:\\Users\\Jose\\workspace\\practica8\\src\\main\\java\\PL\\practica8\\javaParser.g:61:11: ( NUMERO | ABRIRPARENTESIS expr CERRARPARENTESIS | ID )
            int alt11=3;
            switch ( input.LA(1) ) {
            case NUMERO:
                {
                alt11=1;
                }
                break;
            case ABRIRPARENTESIS:
                {
                alt11=2;
                }
                break;
            case ID:
                {
                alt11=3;
                }
                break;
            default:
                NoViableAltException nvae =
                    new NoViableAltException("", 11, 0, input);

                throw nvae;

            }

            switch (alt11) {
                case 1 :
                    // C:\\Users\\Jose\\workspace\\practica8\\src\\main\\java\\PL\\practica8\\javaParser.g:61:14: NUMERO
                    {
                    match(input,NUMERO,FOLLOW_NUMERO_in_exp_base285); 

                    }
                    break;
                case 2 :
                    // C:\\Users\\Jose\\workspace\\practica8\\src\\main\\java\\PL\\practica8\\javaParser.g:61:23: ABRIRPARENTESIS expr CERRARPARENTESIS
                    {
                    match(input,ABRIRPARENTESIS,FOLLOW_ABRIRPARENTESIS_in_exp_base289); 

                    pushFollow(FOLLOW_expr_in_exp_base291);
                    expr();

                    state._fsp--;


                    match(input,CERRARPARENTESIS,FOLLOW_CERRARPARENTESIS_in_exp_base293); 

                    }
                    break;
                case 3 :
                    // C:\\Users\\Jose\\workspace\\practica8\\src\\main\\java\\PL\\practica8\\javaParser.g:61:63: ID
                    {
                    match(input,ID,FOLLOW_ID_in_exp_base297); 

                    }
                    break;

            }
        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }

        finally {
        	// do for sure before leaving
        }
        return ;
    }
    // $ANTLR end "exp_base"



    // $ANTLR start "cabecerafuncion"
    // C:\\Users\\Jose\\workspace\\practica8\\src\\main\\java\\PL\\practica8\\javaParser.g:63:1: cabecerafuncion : tipo ID ABRIRPARENTESIS ( def_parametros )? CERRARPARENTESIS ;
    public final void cabecerafuncion() throws RecognitionException {
        try {
            // C:\\Users\\Jose\\workspace\\practica8\\src\\main\\java\\PL\\practica8\\javaParser.g:63:17: ( tipo ID ABRIRPARENTESIS ( def_parametros )? CERRARPARENTESIS )
            // C:\\Users\\Jose\\workspace\\practica8\\src\\main\\java\\PL\\practica8\\javaParser.g:63:19: tipo ID ABRIRPARENTESIS ( def_parametros )? CERRARPARENTESIS
            {
            pushFollow(FOLLOW_tipo_in_cabecerafuncion306);
            tipo();

            state._fsp--;


            match(input,ID,FOLLOW_ID_in_cabecerafuncion308); 

            match(input,ABRIRPARENTESIS,FOLLOW_ABRIRPARENTESIS_in_cabecerafuncion310); 

            // C:\\Users\\Jose\\workspace\\practica8\\src\\main\\java\\PL\\practica8\\javaParser.g:63:43: ( def_parametros )?
            int alt12=2;
            int LA12_0 = input.LA(1);

            if ( (LA12_0==CHAR||LA12_0==FLOAT||LA12_0==INT||LA12_0==VOID) ) {
                alt12=1;
            }
            switch (alt12) {
                case 1 :
                    // C:\\Users\\Jose\\workspace\\practica8\\src\\main\\java\\PL\\practica8\\javaParser.g:63:43: def_parametros
                    {
                    pushFollow(FOLLOW_def_parametros_in_cabecerafuncion312);
                    def_parametros();

                    state._fsp--;


                    }
                    break;

            }


            match(input,CERRARPARENTESIS,FOLLOW_CERRARPARENTESIS_in_cabecerafuncion315); 

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }

        finally {
        	// do for sure before leaving
        }
        return ;
    }
    // $ANTLR end "cabecerafuncion"



    // $ANTLR start "llamadafuncion"
    // C:\\Users\\Jose\\workspace\\practica8\\src\\main\\java\\PL\\practica8\\javaParser.g:65:1: llamadafuncion : ID ABRIRPARENTESIS ( parametros )? CERRARPARENTESIS ;
    public final void llamadafuncion() throws RecognitionException {
        try {
            // C:\\Users\\Jose\\workspace\\practica8\\src\\main\\java\\PL\\practica8\\javaParser.g:65:16: ( ID ABRIRPARENTESIS ( parametros )? CERRARPARENTESIS )
            // C:\\Users\\Jose\\workspace\\practica8\\src\\main\\java\\PL\\practica8\\javaParser.g:65:18: ID ABRIRPARENTESIS ( parametros )? CERRARPARENTESIS
            {
            match(input,ID,FOLLOW_ID_in_llamadafuncion323); 

            match(input,ABRIRPARENTESIS,FOLLOW_ABRIRPARENTESIS_in_llamadafuncion325); 

            // C:\\Users\\Jose\\workspace\\practica8\\src\\main\\java\\PL\\practica8\\javaParser.g:65:37: ( parametros )?
            int alt13=2;
            int LA13_0 = input.LA(1);

            if ( ((LA13_0 >= CADENA && LA13_0 <= CARACTER)||LA13_0==ID||LA13_0==NUMERO) ) {
                alt13=1;
            }
            switch (alt13) {
                case 1 :
                    // C:\\Users\\Jose\\workspace\\practica8\\src\\main\\java\\PL\\practica8\\javaParser.g:65:37: parametros
                    {
                    pushFollow(FOLLOW_parametros_in_llamadafuncion327);
                    parametros();

                    state._fsp--;


                    }
                    break;

            }


            match(input,CERRARPARENTESIS,FOLLOW_CERRARPARENTESIS_in_llamadafuncion330); 

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }

        finally {
        	// do for sure before leaving
        }
        return ;
    }
    // $ANTLR end "llamadafuncion"



    // $ANTLR start "sentencia"
    // C:\\Users\\Jose\\workspace\\practica8\\src\\main\\java\\PL\\practica8\\javaParser.g:67:1: sentencia[boolean dentrowhile] : ( ( llamadafuncion | BREAK | asignacion | ret ) SEPARADOR | buclewhile[dentrowhile] | condicionif[dentrowhile] );
    public final void sentencia(boolean dentrowhile) throws RecognitionException {
        try {
            // C:\\Users\\Jose\\workspace\\practica8\\src\\main\\java\\PL\\practica8\\javaParser.g:67:33: ( ( llamadafuncion | BREAK | asignacion | ret ) SEPARADOR | buclewhile[dentrowhile] | condicionif[dentrowhile] )
            int alt15=3;
            switch ( input.LA(1) ) {
            case BREAK:
            case CHAR:
            case FLOAT:
            case ID:
            case INT:
            case VOID:
            case RETORNAR:
                {
                alt15=1;
                }
                break;
            case WHILE:
                {
                alt15=2;
                }
                break;
            case IF:
                {
                alt15=3;
                }
                break;
            default:
                NoViableAltException nvae =
                    new NoViableAltException("", 15, 0, input);

                throw nvae;

            }

            switch (alt15) {
                case 1 :
                    // C:\\Users\\Jose\\workspace\\practica8\\src\\main\\java\\PL\\practica8\\javaParser.g:67:35: ( llamadafuncion | BREAK | asignacion | ret ) SEPARADOR
                    {
                    // C:\\Users\\Jose\\workspace\\practica8\\src\\main\\java\\PL\\practica8\\javaParser.g:67:35: ( llamadafuncion | BREAK | asignacion | ret )
                    int alt14=4;
                    switch ( input.LA(1) ) {
                    case ID:
                        {
                        int LA14_1 = input.LA(2);

                        if ( (LA14_1==ABRIRPARENTESIS) ) {
                            alt14=1;
                        }
                        else if ( (LA14_1==ASIGNACION||LA14_1==COMA||LA14_1==SEPARADOR) ) {
                            alt14=3;
                        }
                        else {
                            NoViableAltException nvae =
                                new NoViableAltException("", 14, 1, input);

                            throw nvae;

                        }
                        }
                        break;
                    case BREAK:
                        {
                        alt14=2;
                        }
                        break;
                    case CHAR:
                    case FLOAT:
                    case INT:
                    case VOID:
                        {
                        alt14=3;
                        }
                        break;
                    case RETORNAR:
                        {
                        alt14=4;
                        }
                        break;
                    default:
                        NoViableAltException nvae =
                            new NoViableAltException("", 14, 0, input);

                        throw nvae;

                    }

                    switch (alt14) {
                        case 1 :
                            // C:\\Users\\Jose\\workspace\\practica8\\src\\main\\java\\PL\\practica8\\javaParser.g:67:36: llamadafuncion
                            {
                            pushFollow(FOLLOW_llamadafuncion_in_sentencia341);
                            llamadafuncion();

                            state._fsp--;


                            }
                            break;
                        case 2 :
                            // C:\\Users\\Jose\\workspace\\practica8\\src\\main\\java\\PL\\practica8\\javaParser.g:68:15: BREAK
                            {
                            match(input,BREAK,FOLLOW_BREAK_in_sentencia357); 

                            if (dentrowhile== true) breakFound = true;

                            }
                            break;
                        case 3 :
                            // C:\\Users\\Jose\\workspace\\practica8\\src\\main\\java\\PL\\practica8\\javaParser.g:69:15: asignacion
                            {
                            pushFollow(FOLLOW_asignacion_in_sentencia375);
                            asignacion();

                            state._fsp--;


                            }
                            break;
                        case 4 :
                            // C:\\Users\\Jose\\workspace\\practica8\\src\\main\\java\\PL\\practica8\\javaParser.g:70:15: ret
                            {
                            pushFollow(FOLLOW_ret_in_sentencia392);
                            ret();

                            state._fsp--;


                            }
                            break;

                    }


                    match(input,SEPARADOR,FOLLOW_SEPARADOR_in_sentencia395); 

                    }
                    break;
                case 2 :
                    // C:\\Users\\Jose\\workspace\\practica8\\src\\main\\java\\PL\\practica8\\javaParser.g:71:15: buclewhile[dentrowhile]
                    {
                    pushFollow(FOLLOW_buclewhile_in_sentencia412);
                    buclewhile(dentrowhile);

                    state._fsp--;


                    }
                    break;
                case 3 :
                    // C:\\Users\\Jose\\workspace\\practica8\\src\\main\\java\\PL\\practica8\\javaParser.g:72:14: condicionif[dentrowhile]
                    {
                    pushFollow(FOLLOW_condicionif_in_sentencia429);
                    condicionif(dentrowhile);

                    state._fsp--;


                    }
                    break;

            }
        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }

        finally {
        	// do for sure before leaving
        }
        return ;
    }
    // $ANTLR end "sentencia"



    // $ANTLR start "bloqueLlaves"
    // C:\\Users\\Jose\\workspace\\practica8\\src\\main\\java\\PL\\practica8\\javaParser.g:74:1: bloqueLlaves[boolean dentrowhile] : ABRIRLLAVE ( sentencia[dentrowhile] )+ CERRARLLAVE ;
    public final void bloqueLlaves(boolean dentrowhile) throws RecognitionException {
        try {
            // C:\\Users\\Jose\\workspace\\practica8\\src\\main\\java\\PL\\practica8\\javaParser.g:74:35: ( ABRIRLLAVE ( sentencia[dentrowhile] )+ CERRARLLAVE )
            // C:\\Users\\Jose\\workspace\\practica8\\src\\main\\java\\PL\\practica8\\javaParser.g:74:37: ABRIRLLAVE ( sentencia[dentrowhile] )+ CERRARLLAVE
            {
            match(input,ABRIRLLAVE,FOLLOW_ABRIRLLAVE_in_bloqueLlaves440); 

            // C:\\Users\\Jose\\workspace\\practica8\\src\\main\\java\\PL\\practica8\\javaParser.g:74:49: ( sentencia[dentrowhile] )+
            int cnt16=0;
            loop16:
            do {
                int alt16=2;
                int LA16_0 = input.LA(1);

                if ( (LA16_0==BREAK||LA16_0==CHAR||LA16_0==FLOAT||(LA16_0 >= ID && LA16_0 <= INT)||(LA16_0 >= VOID && LA16_0 <= WHILE)||LA16_0==RETORNAR) ) {
                    alt16=1;
                }


                switch (alt16) {
            	case 1 :
            	    // C:\\Users\\Jose\\workspace\\practica8\\src\\main\\java\\PL\\practica8\\javaParser.g:74:49: sentencia[dentrowhile]
            	    {
            	    pushFollow(FOLLOW_sentencia_in_bloqueLlaves443);
            	    sentencia(dentrowhile);

            	    state._fsp--;


            	    }
            	    break;

            	default :
            	    if ( cnt16 >= 1 ) break loop16;
                        EarlyExitException eee =
                            new EarlyExitException(16, input);
                        throw eee;
                }
                cnt16++;
            } while (true);


            match(input,CERRARLLAVE,FOLLOW_CERRARLLAVE_in_bloqueLlaves448); 

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }

        finally {
        	// do for sure before leaving
        }
        return ;
    }
    // $ANTLR end "bloqueLlaves"



    // $ANTLR start "buclewhile"
    // C:\\Users\\Jose\\workspace\\practica8\\src\\main\\java\\PL\\practica8\\javaParser.g:77:1: buclewhile[boolean dentrowhile] : WHILE ABRIRPARENTESIS cond CERRARPARENTESIS ( sentencia[true] | bloqueLlaves[true] ) ;
    public final void buclewhile(boolean dentrowhile) throws RecognitionException {
        try {
            // C:\\Users\\Jose\\workspace\\practica8\\src\\main\\java\\PL\\practica8\\javaParser.g:77:33: ( WHILE ABRIRPARENTESIS cond CERRARPARENTESIS ( sentencia[true] | bloqueLlaves[true] ) )
            // C:\\Users\\Jose\\workspace\\practica8\\src\\main\\java\\PL\\practica8\\javaParser.g:77:35: WHILE ABRIRPARENTESIS cond CERRARPARENTESIS ( sentencia[true] | bloqueLlaves[true] )
            {
            match(input,WHILE,FOLLOW_WHILE_in_buclewhile458); 

            match(input,ABRIRPARENTESIS,FOLLOW_ABRIRPARENTESIS_in_buclewhile460); 

            pushFollow(FOLLOW_cond_in_buclewhile462);
            cond();

            state._fsp--;


            match(input,CERRARPARENTESIS,FOLLOW_CERRARPARENTESIS_in_buclewhile464); 

            // C:\\Users\\Jose\\workspace\\practica8\\src\\main\\java\\PL\\practica8\\javaParser.g:77:79: ( sentencia[true] | bloqueLlaves[true] )
            int alt17=2;
            int LA17_0 = input.LA(1);

            if ( (LA17_0==BREAK||LA17_0==CHAR||LA17_0==FLOAT||(LA17_0 >= ID && LA17_0 <= INT)||(LA17_0 >= VOID && LA17_0 <= WHILE)||LA17_0==RETORNAR) ) {
                alt17=1;
            }
            else if ( (LA17_0==ABRIRLLAVE) ) {
                alt17=2;
            }
            else {
                NoViableAltException nvae =
                    new NoViableAltException("", 17, 0, input);

                throw nvae;

            }
            switch (alt17) {
                case 1 :
                    // C:\\Users\\Jose\\workspace\\practica8\\src\\main\\java\\PL\\practica8\\javaParser.g:77:80: sentencia[true]
                    {
                    pushFollow(FOLLOW_sentencia_in_buclewhile467);
                    sentencia(true);

                    state._fsp--;


                    }
                    break;
                case 2 :
                    // C:\\Users\\Jose\\workspace\\practica8\\src\\main\\java\\PL\\practica8\\javaParser.g:77:97: bloqueLlaves[true]
                    {
                    pushFollow(FOLLOW_bloqueLlaves_in_buclewhile471);
                    bloqueLlaves(true);

                    state._fsp--;


                    }
                    break;

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }

        finally {
        	// do for sure before leaving
        }
        return ;
    }
    // $ANTLR end "buclewhile"



    // $ANTLR start "condicionif"
    // C:\\Users\\Jose\\workspace\\practica8\\src\\main\\java\\PL\\practica8\\javaParser.g:78:1: condicionif[boolean dentrowhile] : IF ABRIRPARENTESIS cond CERRARPARENTESIS ( sentencia[dentrowhile] | bloqueLlaves[dentrowhile] ) ;
    public final void condicionif(boolean dentrowhile) throws RecognitionException {
        try {
            // C:\\Users\\Jose\\workspace\\practica8\\src\\main\\java\\PL\\practica8\\javaParser.g:78:34: ( IF ABRIRPARENTESIS cond CERRARPARENTESIS ( sentencia[dentrowhile] | bloqueLlaves[dentrowhile] ) )
            // C:\\Users\\Jose\\workspace\\practica8\\src\\main\\java\\PL\\practica8\\javaParser.g:78:36: IF ABRIRPARENTESIS cond CERRARPARENTESIS ( sentencia[dentrowhile] | bloqueLlaves[dentrowhile] )
            {
            match(input,IF,FOLLOW_IF_in_condicionif481); 

            match(input,ABRIRPARENTESIS,FOLLOW_ABRIRPARENTESIS_in_condicionif484); 

            pushFollow(FOLLOW_cond_in_condicionif486);
            cond();

            state._fsp--;


            match(input,CERRARPARENTESIS,FOLLOW_CERRARPARENTESIS_in_condicionif488); 

            // C:\\Users\\Jose\\workspace\\practica8\\src\\main\\java\\PL\\practica8\\javaParser.g:78:78: ( sentencia[dentrowhile] | bloqueLlaves[dentrowhile] )
            int alt18=2;
            int LA18_0 = input.LA(1);

            if ( (LA18_0==BREAK||LA18_0==CHAR||LA18_0==FLOAT||(LA18_0 >= ID && LA18_0 <= INT)||(LA18_0 >= VOID && LA18_0 <= WHILE)||LA18_0==RETORNAR) ) {
                alt18=1;
            }
            else if ( (LA18_0==ABRIRLLAVE) ) {
                alt18=2;
            }
            else {
                NoViableAltException nvae =
                    new NoViableAltException("", 18, 0, input);

                throw nvae;

            }
            switch (alt18) {
                case 1 :
                    // C:\\Users\\Jose\\workspace\\practica8\\src\\main\\java\\PL\\practica8\\javaParser.g:78:79: sentencia[dentrowhile]
                    {
                    pushFollow(FOLLOW_sentencia_in_condicionif491);
                    sentencia(dentrowhile);

                    state._fsp--;


                    }
                    break;
                case 2 :
                    // C:\\Users\\Jose\\workspace\\practica8\\src\\main\\java\\PL\\practica8\\javaParser.g:78:103: bloqueLlaves[dentrowhile]
                    {
                    pushFollow(FOLLOW_bloqueLlaves_in_condicionif495);
                    bloqueLlaves(dentrowhile);

                    state._fsp--;


                    }
                    break;

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }

        finally {
        	// do for sure before leaving
        }
        return ;
    }
    // $ANTLR end "condicionif"



    // $ANTLR start "cond"
    // C:\\Users\\Jose\\workspace\\practica8\\src\\main\\java\\PL\\practica8\\javaParser.g:79:3: cond : ( OP_NOT )? cond_expr ( op_log ( OP_NOT )? cond_expr )* ;
    public final void cond() throws RecognitionException {
        try {
            // C:\\Users\\Jose\\workspace\\practica8\\src\\main\\java\\PL\\practica8\\javaParser.g:79:8: ( ( OP_NOT )? cond_expr ( op_log ( OP_NOT )? cond_expr )* )
            // C:\\Users\\Jose\\workspace\\practica8\\src\\main\\java\\PL\\practica8\\javaParser.g:79:10: ( OP_NOT )? cond_expr ( op_log ( OP_NOT )? cond_expr )*
            {
            // C:\\Users\\Jose\\workspace\\practica8\\src\\main\\java\\PL\\practica8\\javaParser.g:79:10: ( OP_NOT )?
            int alt19=2;
            int LA19_0 = input.LA(1);

            if ( (LA19_0==OP_NOT) ) {
                alt19=1;
            }
            switch (alt19) {
                case 1 :
                    // C:\\Users\\Jose\\workspace\\practica8\\src\\main\\java\\PL\\practica8\\javaParser.g:79:11: OP_NOT
                    {
                    match(input,OP_NOT,FOLLOW_OP_NOT_in_cond507); 

                    }
                    break;

            }


            pushFollow(FOLLOW_cond_expr_in_cond511);
            cond_expr();

            state._fsp--;


            // C:\\Users\\Jose\\workspace\\practica8\\src\\main\\java\\PL\\practica8\\javaParser.g:79:30: ( op_log ( OP_NOT )? cond_expr )*
            loop21:
            do {
                int alt21=2;
                int LA21_0 = input.LA(1);

                if ( (LA21_0==OP_AND||LA21_0==OP_OR) ) {
                    alt21=1;
                }


                switch (alt21) {
            	case 1 :
            	    // C:\\Users\\Jose\\workspace\\practica8\\src\\main\\java\\PL\\practica8\\javaParser.g:79:31: op_log ( OP_NOT )? cond_expr
            	    {
            	    pushFollow(FOLLOW_op_log_in_cond514);
            	    op_log();

            	    state._fsp--;


            	    // C:\\Users\\Jose\\workspace\\practica8\\src\\main\\java\\PL\\practica8\\javaParser.g:79:38: ( OP_NOT )?
            	    int alt20=2;
            	    int LA20_0 = input.LA(1);

            	    if ( (LA20_0==OP_NOT) ) {
            	        alt20=1;
            	    }
            	    switch (alt20) {
            	        case 1 :
            	            // C:\\Users\\Jose\\workspace\\practica8\\src\\main\\java\\PL\\practica8\\javaParser.g:79:39: OP_NOT
            	            {
            	            match(input,OP_NOT,FOLLOW_OP_NOT_in_cond517); 

            	            }
            	            break;

            	    }


            	    pushFollow(FOLLOW_cond_expr_in_cond521);
            	    cond_expr();

            	    state._fsp--;


            	    }
            	    break;

            	default :
            	    break loop21;
                }
            } while (true);


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }

        finally {
        	// do for sure before leaving
        }
        return ;
    }
    // $ANTLR end "cond"



    // $ANTLR start "cond_expr"
    // C:\\Users\\Jose\\workspace\\practica8\\src\\main\\java\\PL\\practica8\\javaParser.g:80:3: cond_expr : expr ( OP_COMP expr )* ;
    public final void cond_expr() throws RecognitionException {
        try {
            // C:\\Users\\Jose\\workspace\\practica8\\src\\main\\java\\PL\\practica8\\javaParser.g:80:13: ( expr ( OP_COMP expr )* )
            // C:\\Users\\Jose\\workspace\\practica8\\src\\main\\java\\PL\\practica8\\javaParser.g:80:15: expr ( OP_COMP expr )*
            {
            pushFollow(FOLLOW_expr_in_cond_expr532);
            expr();

            state._fsp--;


            // C:\\Users\\Jose\\workspace\\practica8\\src\\main\\java\\PL\\practica8\\javaParser.g:80:20: ( OP_COMP expr )*
            loop22:
            do {
                int alt22=2;
                int LA22_0 = input.LA(1);

                if ( (LA22_0==OP_COMP) ) {
                    alt22=1;
                }


                switch (alt22) {
            	case 1 :
            	    // C:\\Users\\Jose\\workspace\\practica8\\src\\main\\java\\PL\\practica8\\javaParser.g:80:21: OP_COMP expr
            	    {
            	    match(input,OP_COMP,FOLLOW_OP_COMP_in_cond_expr535); 

            	    pushFollow(FOLLOW_expr_in_cond_expr537);
            	    expr();

            	    state._fsp--;


            	    }
            	    break;

            	default :
            	    break loop22;
                }
            } while (true);


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }

        finally {
        	// do for sure before leaving
        }
        return ;
    }
    // $ANTLR end "cond_expr"



    // $ANTLR start "ret"
    // C:\\Users\\Jose\\workspace\\practica8\\src\\main\\java\\PL\\practica8\\javaParser.g:81:1: ret : RETORNAR parametro ;
    public final void ret() throws RecognitionException {
        try {
            // C:\\Users\\Jose\\workspace\\practica8\\src\\main\\java\\PL\\practica8\\javaParser.g:81:5: ( RETORNAR parametro )
            // C:\\Users\\Jose\\workspace\\practica8\\src\\main\\java\\PL\\practica8\\javaParser.g:81:7: RETORNAR parametro
            {
            match(input,RETORNAR,FOLLOW_RETORNAR_in_ret546); 

            pushFollow(FOLLOW_parametro_in_ret548);
            parametro();

            state._fsp--;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }

        finally {
        	// do for sure before leaving
        }
        return ;
    }
    // $ANTLR end "ret"

    // Delegated rules


 

    public static final BitSet FOLLOW_CADENA_in_parametro71 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_CARACTER_in_parametro75 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_NUMERO_in_parametro79 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ID_in_parametro83 = new BitSet(new long[]{0x0000400000000002L});
    public static final BitSet FOLLOW_ABRIRCORCHETES_in_parametro86 = new BitSet(new long[]{0x0000000800000000L});
    public static final BitSet FOLLOW_NUMERO_in_parametro88 = new BitSet(new long[]{0x0000800000000000L});
    public static final BitSet FOLLOW_CERRARCORCHETES_in_parametro90 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_parametro_in_parametros99 = new BitSet(new long[]{0x0000000000040002L});
    public static final BitSet FOLLOW_COMA_in_parametros102 = new BitSet(new long[]{0x0000000808003000L});
    public static final BitSet FOLLOW_parametro_in_parametros104 = new BitSet(new long[]{0x0000000000040002L});
    public static final BitSet FOLLOW_tipo_in_def_parametros113 = new BitSet(new long[]{0x0000000808003000L});
    public static final BitSet FOLLOW_parametro_in_def_parametros115 = new BitSet(new long[]{0x0000000000040002L});
    public static final BitSet FOLLOW_COMA_in_def_parametros118 = new BitSet(new long[]{0x0000100022020000L});
    public static final BitSet FOLLOW_tipo_in_def_parametros120 = new BitSet(new long[]{0x0000000808003000L});
    public static final BitSet FOLLOW_parametro_in_def_parametros122 = new BitSet(new long[]{0x0000000000040002L});
    public static final BitSet FOLLOW_metodo_in_entrada159 = new BitSet(new long[]{0x000130003A020802L});
    public static final BitSet FOLLOW_sentencia_in_entrada161 = new BitSet(new long[]{0x000130003A020802L});
    public static final BitSet FOLLOW_cabecerafuncion_in_metodo172 = new BitSet(new long[]{0x0000000000000020L});
    public static final BitSet FOLLOW_bloqueLlaves_in_metodo174 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_declaracion_in_asignacion184 = new BitSet(new long[]{0x0000000000040082L});
    public static final BitSet FOLLOW_ASIGNACION_in_asignacion189 = new BitSet(new long[]{0x0000000808000040L});
    public static final BitSet FOLLOW_expr_in_asignacion192 = new BitSet(new long[]{0x0000000000040082L});
    public static final BitSet FOLLOW_llamadafuncion_in_asignacion196 = new BitSet(new long[]{0x0000000000040082L});
    public static final BitSet FOLLOW_COMA_in_asignacion203 = new BitSet(new long[]{0x000010002A020000L});
    public static final BitSet FOLLOW_declaracion_in_asignacion205 = new BitSet(new long[]{0x0000000000040082L});
    public static final BitSet FOLLOW_tipo_in_declaracion216 = new BitSet(new long[]{0x0000000008000000L});
    public static final BitSet FOLLOW_ID_in_declaracion219 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_exp_mult_in_expr229 = new BitSet(new long[]{0x0000000300000002L});
    public static final BitSet FOLLOW_MAS_in_expr233 = new BitSet(new long[]{0x0000000808000040L});
    public static final BitSet FOLLOW_exp_mult_in_expr235 = new BitSet(new long[]{0x0000000300000002L});
    public static final BitSet FOLLOW_MENOS_in_expr241 = new BitSet(new long[]{0x0000000808000040L});
    public static final BitSet FOLLOW_exp_mult_in_expr243 = new BitSet(new long[]{0x0000000300000002L});
    public static final BitSet FOLLOW_exp_base_in_exp_mult259 = new BitSet(new long[]{0x0000040000000102L});
    public static final BitSet FOLLOW_ASTERISCO_in_exp_mult262 = new BitSet(new long[]{0x0000000808000040L});
    public static final BitSet FOLLOW_exp_base_in_exp_mult264 = new BitSet(new long[]{0x0000040000000102L});
    public static final BitSet FOLLOW_SLASH_in_exp_mult270 = new BitSet(new long[]{0x0000000808000040L});
    public static final BitSet FOLLOW_exp_base_in_exp_mult272 = new BitSet(new long[]{0x0000040000000102L});
    public static final BitSet FOLLOW_NUMERO_in_exp_base285 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ABRIRPARENTESIS_in_exp_base289 = new BitSet(new long[]{0x0000000808000040L});
    public static final BitSet FOLLOW_expr_in_exp_base291 = new BitSet(new long[]{0x0000000000010000L});
    public static final BitSet FOLLOW_CERRARPARENTESIS_in_exp_base293 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ID_in_exp_base297 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_tipo_in_cabecerafuncion306 = new BitSet(new long[]{0x0000000008000000L});
    public static final BitSet FOLLOW_ID_in_cabecerafuncion308 = new BitSet(new long[]{0x0000000000000040L});
    public static final BitSet FOLLOW_ABRIRPARENTESIS_in_cabecerafuncion310 = new BitSet(new long[]{0x0000100022030000L});
    public static final BitSet FOLLOW_def_parametros_in_cabecerafuncion312 = new BitSet(new long[]{0x0000000000010000L});
    public static final BitSet FOLLOW_CERRARPARENTESIS_in_cabecerafuncion315 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ID_in_llamadafuncion323 = new BitSet(new long[]{0x0000000000000040L});
    public static final BitSet FOLLOW_ABRIRPARENTESIS_in_llamadafuncion325 = new BitSet(new long[]{0x0000000808013000L});
    public static final BitSet FOLLOW_parametros_in_llamadafuncion327 = new BitSet(new long[]{0x0000000000010000L});
    public static final BitSet FOLLOW_CERRARPARENTESIS_in_llamadafuncion330 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_llamadafuncion_in_sentencia341 = new BitSet(new long[]{0x0000020000000000L});
    public static final BitSet FOLLOW_BREAK_in_sentencia357 = new BitSet(new long[]{0x0000020000000000L});
    public static final BitSet FOLLOW_asignacion_in_sentencia375 = new BitSet(new long[]{0x0000020000000000L});
    public static final BitSet FOLLOW_ret_in_sentencia392 = new BitSet(new long[]{0x0000020000000000L});
    public static final BitSet FOLLOW_SEPARADOR_in_sentencia395 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_buclewhile_in_sentencia412 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_condicionif_in_sentencia429 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ABRIRLLAVE_in_bloqueLlaves440 = new BitSet(new long[]{0x000130003A020800L});
    public static final BitSet FOLLOW_sentencia_in_bloqueLlaves443 = new BitSet(new long[]{0x000130003A028800L});
    public static final BitSet FOLLOW_CERRARLLAVE_in_bloqueLlaves448 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_WHILE_in_buclewhile458 = new BitSet(new long[]{0x0000000000000040L});
    public static final BitSet FOLLOW_ABRIRPARENTESIS_in_buclewhile460 = new BitSet(new long[]{0x0000004808000040L});
    public static final BitSet FOLLOW_cond_in_buclewhile462 = new BitSet(new long[]{0x0000000000010000L});
    public static final BitSet FOLLOW_CERRARPARENTESIS_in_buclewhile464 = new BitSet(new long[]{0x000130003A020820L});
    public static final BitSet FOLLOW_sentencia_in_buclewhile467 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_bloqueLlaves_in_buclewhile471 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_IF_in_condicionif481 = new BitSet(new long[]{0x0000000000000040L});
    public static final BitSet FOLLOW_ABRIRPARENTESIS_in_condicionif484 = new BitSet(new long[]{0x0000004808000040L});
    public static final BitSet FOLLOW_cond_in_condicionif486 = new BitSet(new long[]{0x0000000000010000L});
    public static final BitSet FOLLOW_CERRARPARENTESIS_in_condicionif488 = new BitSet(new long[]{0x000130003A020820L});
    public static final BitSet FOLLOW_sentencia_in_condicionif491 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_bloqueLlaves_in_condicionif495 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_OP_NOT_in_cond507 = new BitSet(new long[]{0x0000000808000040L});
    public static final BitSet FOLLOW_cond_expr_in_cond511 = new BitSet(new long[]{0x0000009000000002L});
    public static final BitSet FOLLOW_op_log_in_cond514 = new BitSet(new long[]{0x0000004808000040L});
    public static final BitSet FOLLOW_OP_NOT_in_cond517 = new BitSet(new long[]{0x0000000808000040L});
    public static final BitSet FOLLOW_cond_expr_in_cond521 = new BitSet(new long[]{0x0000009000000002L});
    public static final BitSet FOLLOW_expr_in_cond_expr532 = new BitSet(new long[]{0x0000002000000002L});
    public static final BitSet FOLLOW_OP_COMP_in_cond_expr535 = new BitSet(new long[]{0x0000000808000040L});
    public static final BitSet FOLLOW_expr_in_cond_expr537 = new BitSet(new long[]{0x0000002000000002L});
    public static final BitSet FOLLOW_RETORNAR_in_ret546 = new BitSet(new long[]{0x0000000808003000L});
    public static final BitSet FOLLOW_parametro_in_ret548 = new BitSet(new long[]{0x0000000000000002L});

}